/**
 * 字符串去重
 * @param {str：目标字符串}
 */
export const reStr = (str) => {
	var arr = str.split('');
	var mySet = new Set(arr);               //数组传入集合
	var reArr = Array.from(mySet);          //集合转成数组
	var reStr = reArr.join('');
	return reStr;
}

/**
 * 数组内连续项分组（如：[1,2,3,12,14,15],结果为[[1,2,3],[12],[14,15]]）
 * @param {arr：原数组}
 */
export const groupArr = (arr) => {
	var result = [],
			i = 0;
	const list = arr.sort((a, b) => a-b);
	list.forEach((item, index) => {
		 if (index === 0) {
			 result[0] = [item];   
		 } else if (item - list[index-1] === 1 ) { // 判断当前值 和 前一个值是否相差1
			 result[i].push(item);
		 } else {
			 result[++i] = [item]; // 开辟新空间。
		 }
	})
	return result;
}

/**
 * 搜索匹配内容高亮显示
 * @param {
	 str:Sring（目标字符串）,
	 key:Sring（关键字）
 }  
 */
export const strHighlight = (str,key) => {
	let arr = []
	if(key === undefined){
		return str
	}
	let newStr = reStr(key)
	for(let j = 0;j<newStr.length;j++){
		for(let i = 0;i<str.length;i++){
			if(str[i] === newStr[j]){
				arr.push(i)
			}
		}
	}
	arr.sort((a,b)=>a-b)
	arr = groupArr(arr)
	arr.forEach((item,index)=>{
		item.splice(1,item.length-2)
	})
	arr.forEach((item,index)=>{
			str=str.slice(0,item[0]+index*36)+'<text class="u-type-primary">'+str.slice(item[0]+index*36,item[item.length-1]+index*36+1)+'</text>'+str.slice(item[item.length-1]+index*36+1,item[str.length])
	})
	return str
}